﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ProjectVLIB.BLL;
using ProjectVLIB.VOL;

namespace ProjectVLIB.Implements
{
    public partial class frmNguoiDungManager : Form
    {
        private NguoiDungBL nguoiDungBl = new NguoiDungBL();

        public frmNguoiDungManager()
        {
            InitializeComponent();
        }

        private void frmNguoiDungManager_Load(object sender, EventArgs e)
        {
            // gọi hàm đổi dữ liệu lên datagridview
            FillData();
        }

        private void FillData()
        {
            // lấy dữ liệu từ bussiness logic 
            GvNguoiDung.DataSource = nguoiDungBl.GetData();
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            // lấy giá trị người dùng nhập vào từ màn hình là mã người dùng
            int MaNguoiDung = int.Parse(txtMaNguoiDung.Text);
            // gọi đến bussines logic để lấy giá trị theo id
            GvNguoiDung.DataSource = nguoiDungBl.GetDataById(MaNguoiDung);
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            // kiểm tra người dùng có chọn 1 dòng nào đó chưa
            if (GvNguoiDung.SelectedCells.Count > 0)
            {
                // lấy vị trị được chọn trên gridview
                int selectedrowindex = GvNguoiDung.SelectedCells[0].RowIndex;
                // từ vị trí lấy đc -> lấy toàn bộ dữ liệu dòng đang chọn
                DataGridViewRow selectedRow = GvNguoiDung.Rows[selectedrowindex];
                // từ dữ liệu của dòng -> ma nguoi dùng
                string Id = selectedRow.Cells["MaNguoiDung"].Value.ToString();
                
                int MaNguoiDung = 0;
                // kiểm tra xem id lấy đc có phải là chữ số (int) hay k?
                if (Id != "" & int.TryParse(Id, out MaNguoiDung))
                {
                    // gọi đên bussines logic để xóa người dùng
                    nguoiDungBl.DeleteData(MaNguoiDung);
                    // load lại dữ liệu trên bảng
                    FillData();
                    // hiển thị message thông báo
                    MessageBox.Show("Đã Xóa Thành Công");
                }
                else
                {
                    MessageBox.Show("Đã Xóa Thất bại");
                }
            }
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            // khởi tạo object người dùng từ VOL
            NguoiDung nguoiDung = new NguoiDung();
            // Gọi frm khi nãy mới tạo -> thêm mới và update
            using (frmNguoiDungForm frm = new frmNguoiDungForm())
            {
                // nếu người dùng click nút lưu
                if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    // lấy giá trị từ bên form
                    nguoiDung.HoTen = frm.HoTen;
                    nguoiDung.MatKhau = frm.MatKhau;
                    nguoiDung.TenTruyCap = frm.TenTruyCap;

                    // lưu vào database theo bussines logic
                    nguoiDungBl.InsertData(nguoiDung);
                    FillData();
                    MessageBox.Show("Đã thêm mới Thành Công");
                }
            }
        }

        private void btnEdit_Click(object sender, EventArgs e)
        {
            NguoiDung nguoiDung = new NguoiDung();

            // kiểm tra người dùng có chọn 1 dòng nào đó chưa
            if (GvNguoiDung.SelectedCells.Count > 0)
            {
                // 
                int selectedrowindex = GvNguoiDung.SelectedCells[0].RowIndex;
                DataGridViewRow selectedRow = GvNguoiDung.Rows[selectedrowindex];
                string Id = selectedRow.Cells["MaNguoiDung"].Value.ToString();

                int MaNguoiDung = 0;
                if (Id != "" & int.TryParse(Id, out MaNguoiDung))
                {
                    DataTable dt = nguoiDungBl.GetDataById(MaNguoiDung);
                    if (dt.Rows.Count > 0)
                    {
                        // Gọi frm khi nãy mới tạo -> thêm mới và update
                        using (frmNguoiDungForm frm = new frmNguoiDungForm())
                        {
                            frm.TenTruyCap = dt.Rows[0]["TenTruyCap"].ToString();
                            frm.MatKhau = dt.Rows[0]["MatKhau"].ToString();
                            frm.HoTen = dt.Rows[0]["HoTen"].ToString();
                            nguoiDung.MaNguoiDung = int.Parse(dt.Rows[0]["MaNguoiDung"].ToString());

                            // nếu người dùng click nút lưu
                            if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                nguoiDung.HoTen = frm.HoTen;
                                nguoiDung.MatKhau = frm.MatKhau;
                                nguoiDung.TenTruyCap = frm.TenTruyCap;

                                nguoiDungBl.UpdateData(nguoiDung);
                                FillData();
                                MessageBox.Show("Đã thay đổi Thành Công");
                            }
                        }
                    }
                }
            }
        }
    }
}
